#pragma once
#include <vector>
#include <queue>
#include <stack>
#include <cmath>

#include "PuzzleState.h"
#include "Node.h"

class PuzzleGame
{
public:
	int countNood;
	PuzzleGame(void);
	~PuzzleGame(void);

	void setStates(Node* start, Node* goal);
	void setRecusriveLevel(int level);
	void setRBFSLimit(float limit) {this->limit = limit;}

	bool bfs();
	bool dfs();
	bool idfs();

	bool isSolved();
	Node* getSolvedNode();
	bool astar();
	bool bf();

	//Tymczasowe rowiazanie
	bool rbfsStart();
	float rbfs(Node* node, float f_cost);

	void typePath();

private:
	Node* start;
	Node* goal;
	int level;
	float limit;

	bool solved;
	Node* solvedNode;

	int vis;
};

